package br.com.fotoxbh.geracao.old;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

import com.googlecode.javacv.cpp.opencv_stitching.Estimator;


public class GerarLeiauteReversoNaoUsar {

	
	public static void main(String[] args) throws IOException {
		int alturaTotal = 912;
		int larguraTotal = 608;
		int alturaFoto = 220; //224, 129
		int larguraFoto = 392; //400, 391
		int entreFotos = 3;
		
		BufferedImage imgFundo = ImageIO.read(new File("images\\fundo_01.jpg"));
		BufferedImage imgTitulo = ImageIO.read(new File("images\\nome_casamento_reverso.jpg"));
		BufferedImage imgSubTitulo = ImageIO.read(new File("images\\nome_carine_rafael_reverso.jpg"));
		BufferedImage imgData = ImageIO.read(new File("images\\nome_data_reverso.jpg"));
		BufferedImage imgRodape = ImageIO.read(new File("images\\nome_fotox_rodape.jpg"));
		
		File dir = new File(
				"C:\\Users\\Pablo\\Dropbox\\Fotos Casamento Carine e Rafael\\Originais");
		File dirFotoComLogo = new File(
				"C:\\Users\\Pablo\\Dropbox\\Fotos Casamento Carine e Rafael\\LeiauteVertical");
//		File dirFotoComLogo = new File(
//				"C:\\Users\\Pablo\\LeiauteVertical");
		for (String dirsSecao : dir.list()) {
			if (dirsSecao.startsWith("secao")) {
				File dirSecao = new File(dir, dirsSecao);
				BufferedImage[] parteImpressao = new BufferedImage[4];
				File finalImage = new File(dirFotoComLogo,dirSecao.getName() + "_v1.jpg" );
				int i = 0;
				for (String nomefotoArquivo : dirSecao.list()) {
					File fotoArquivo = new File(dirSecao, nomefotoArquivo);
					if (fotoArquivo.getName().startsWith("foto")) {
						parteImpressao[i] = ImageIO.read(fotoArquivo);
						i++; //incrementa o indice da foto	
					}
				}
				/*monta o conjunto de fotos*/
				if(parteImpressao.length >= 3) {
					
					if(parteImpressao[0] == null || parteImpressao[1] == null  || parteImpressao[2] == null || parteImpressao[3] == null  ) {
						continue;
					}
					int yTitulo = (alturaTotal - imgTitulo.getHeight())  / 2;
					int xTitulo = larguraFoto +  6 * entreFotos;
					imgFundo.createGraphics().drawImage(imgTitulo, xTitulo, yTitulo, null);
					int ySubTitulo = (alturaTotal - imgSubTitulo.getHeight())  / 2; 
					int xSubTitulo = xTitulo + imgTitulo.getWidth() +  4 * entreFotos;
					imgFundo.createGraphics().drawImage(imgSubTitulo, xSubTitulo, ySubTitulo, null);
					int yData = (alturaTotal - imgData.getHeight())  / 2;
					int xData = xSubTitulo + imgSubTitulo.getWidth() +  4 * entreFotos;
					imgFundo.createGraphics().drawImage(imgData, xData, yData, null);
					
//					int x = (larguraTotal/2) - (larguraFoto / 2);
					int x = 4 * entreFotos;
//					int y1 = yData + imgData.getHeight() + entreFotos;
					int y1 = 4 * entreFotos - 2;
					int y2 = y1 + alturaFoto + entreFotos;
					int y3 = y2 + alturaFoto + entreFotos;
					int y4 = y3 + alturaFoto + entreFotos;
					
					imgFundo.createGraphics().drawImage(parteImpressao[0].getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x, y1, null);
					imgFundo.createGraphics().drawImage(parteImpressao[1].getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x, y2, null);
					imgFundo.createGraphics().drawImage(parteImpressao[2].getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x, y3, null);
					imgFundo.createGraphics().drawImage(parteImpressao[3].getScaledInstance(larguraFoto, alturaFoto, Image.SCALE_AREA_AVERAGING), x, y4, null);
					
					int xRodape = larguraTotal - imgRodape.getWidth() - 5*entreFotos;  
					int yRodape = alturaTotal - imgRodape.getHeight() - 5*entreFotos;
					imgFundo.createGraphics().drawImage(imgRodape, xRodape, yRodape, null);
					
					ImageIO.write(imgFundo, "jpeg", finalImage);	
				}
			}
		}
	}
}
